package com.design.framework.dataSource;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * 动态配置数据库
 * 
 * @author JohnDeng
 * @dataTime 2018年3月26日下午4:13:19
 *
 */
public class DynamicDataSourceHolder extends AbstractRoutingDataSource {
	/**
	 * 注意：数据源标识保存在线程变量中，避免多线程操作数据源时互相干扰
	 */
	private static final ThreadLocal<String> THREAD_DATA_SOURCE = new ThreadLocal<String>();

	public static void setDataSource(String dataSource) {

		THREAD_DATA_SOURCE.set(dataSource);
	}

	public static void remove() {
		THREAD_DATA_SOURCE.remove();
	}

	private static String getDataSource() {
		return THREAD_DATA_SOURCE.get();
	}

	@Override
	protected Object determineCurrentLookupKey() {
		String dataSource = getDataSource();
		remove();
		return dataSource;
	}
}
